package pe.edu.upc.e41a.javasoft.service;

import java.util.List;

import javax.annotation.Resource;
import javax.persistence.TypedQuery;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import pe.edu.upc.e41a.javasoft.dao.TipoDocumentoDao;
import pe.edu.upc.e41a.javasoft.domain.TipoDocumento;

@Service
@Transactional
public class TipoDocumentoServiceImpl implements TipoDocumentoService {

	@Resource
	private TipoDocumentoDao tipoDocumentoDao;

	@Override
	public String insertarTipoDocumento(TipoDocumento tipoDocumento) {
		String mensaje =null;
		try {
			tipoDocumentoDao.saveTipoDocumento(tipoDocumento);
			mensaje="El tipo de documento: "+tipoDocumento.getDescripcion() +" se registró exitosamente";
		} catch (Exception e) {
			mensaje="Error al registrar el tipo de documento";
			return mensaje;
		}
		return mensaje;
	}

	@Override
	public String actualizarTipoDocumento(TipoDocumento tipoDocumento) {
		tipoDocumentoDao.updateTipoDocumento(tipoDocumento);
		return null;
	}

	@Override
	public String eliminarTipoDocumento(TipoDocumento tipoDocumento) {
		tipoDocumentoDao.deleteTipoDocumento(tipoDocumento);
		return null;
	}

	@Override
	public long contarTipoDocumentos() {
		return tipoDocumentoDao.countTipoDocumentoes();
	}

	@Override
	public List<TipoDocumento> listarTodoTipoDocumentos() {
		return tipoDocumentoDao.findAllTipoDocumentoes();
	}

	@Override
	public TipoDocumento buscarTipoDocumentoPorCodigo(Integer codigo) {
		return tipoDocumentoDao.findTipoDocumento(codigo);
	}

	@Override
	public TipoDocumento buscarTipoDocumentoesPorDescripcionExacta(
			String descripcion) {
		TypedQuery<TipoDocumento> tipoDocumento = tipoDocumentoDao
				.findTipoDocumentoesByDescripcionEquals(descripcion);
		TipoDocumento tipoDocumentoresultado = tipoDocumento.getSingleResult();
		return tipoDocumentoresultado;
	}



}
